Skip to main content

具有格式定义的占位符

元素的输出文本可以通过占位符 (%) 并带有格式定义。显示文本时,将插入变量的值而不是占位符。格式定义中的数据类型和变量的数据类型必须相同。

显示的字符串列在 文本 元素属性。变量列在 文本变量 财产。

可视化用户可以在元素中指定文本,例如,文本被存储并显示为文本输出变量。用户输入必须与输入格式相对应。文本输出变量的数据类型必须与为输入格式定义的数据类型相对应。

输入文本的格式定义位于 输入配置 对话,在 文本输入,在 写入变量 输入动作。变量列在 文本变量 财产。

整数

整数的格式定义如下:

% <标志> <最少位数> <类型>

推荐的数据类型: BYTE | WORD | DWORD | LWORD | SINT | USINT | INT | UINT | DINT | UDINT | LINT | ULINT

句法

例子

描述

可视化示例

<标志>

可选且可组合

代码: iValue : INT := -12;

文本变量 财产: PLC_PRG.iCounter

-

%-5d

按照数字的最小宽度(以最小位数指定)左对齐

文本 财产: Value: %-5d

+

%+d

输出总是带有符号

文本 财产: Value: %+d

输出: Value: -12

0

%05d

用 0 填充位置,直到达到最小位置数(包括符号)

文本 财产: Value: %05d

<最少位数>

%5d

选修的

最少名额数

句法

例子

描述

可视化示例

<类型>

必需的

d

i

%d

输出为整数十进制数

代码: iValue : INT := -12;

文本 财产: Value: %d

文本变量 财产: PLC_PRG.iCounter

输出: Value: -12

%+05d

代码: iValue : INT := -12;

文本 财产: Value: %+05d

文本变量 财产: PLC_PRG.iCounter

输出: Value: -0012

b

%08b

输出为无符号、无前缀的整数二进制数

代码: byCode : BYTE := 255;

文本 财产: Coding: %08b

文本变量 财产: PLC_PRG.byCode

输出: Coding: 11111111

o

%04o

输出为无符号、无前缀的八进制整数

代码: byCode : BYTE := 8#377;

文本 财产: Octal number: %04o

文本变量 财产: PLC_PRG.byCode

输出: Octal number: 0377

x

%04x

输出为无符号的 32 位十六进制数,其中包含数字 a–f(小写),无前缀和分隔符

代码: wCode : WORD := 16#1;

文本 财产: Coding: 16#%04x

文本变量 财产: PLC_PRG.dwCode

输出: Coding: 16#0001

X

%08X

输出为无符号的 32 位十六进制数,其中包含数字 A–F(大写),无前缀和分隔符

代码: dwCode : DWORD := 16#FFFFFFFF;

文本 财产: Coding: %08X

文本变量 财产: PLC_PRG.dwCode

输出: Coding: FFFFFFFF

llx

%016llx

输出为无符号的 64 位十六进制数,其中包含数字 a–f(小写),无前缀和分隔符

笔记: llx 表示“长长十六进制”

推荐的数据类型: LWORD | LINT | ULINT

代码: lwCode : LWORD := 16#4FFF_3FFF_2FFF_1FFF;

文本 财产: Coding: 16#%016llx

文本变量 财产: PLC_PRG.lwCode

输出: Coding: 16#4fff3fff2fff1fff

llX

%016llX

输出为无符号的 64 位十六进制数,其中包含数字 A–F(大写),无前缀和分隔符

推荐的数据类型: LWORD | LINT | ULINT

代码: lwCode : LWORD := 16#4FFF_3FFF_2FFF_1FFF;

文本 财产: Coding: %016llX

文本变量 财产: PLC_PRG.lwCode

输出: Coding: 4FFF3FFF2FFF1FFF

u

%5u

输出为无符号整数十进制数

推荐的数据类型: USINT | UINT | UDINT | ULINT

代码: uiNumber : UINT := 1234;

文本 财产: Number: %u

文本变量 财产: PLC_PRG.uiNumber

输出: Number: 1234

定点表示法中的浮点数

浮点数可以显示为定点表示法中的十进制数。其格式定义如下:

% <标志> <最少位数> . <准确度> f

此类占位变量的推荐数据类型: REAL | LREAL

句法

例子

描述

可视化示例

<标志>

可选且可组合

-

%-12.9f

按照最小位数左对齐

+

%+f

总是带有符号,对于正数也是如此

代码: lrVar : LREAL := 1.234567E-003;

文本 财产: lrVar: %+f

文本变量 财产: PLC_PRG.lrVar

输出: lrVar: +0.001235

0

%012.3f

用 0 填充位置,直到达到最小位数(包括符号和小数点)

代码: lrVar : LREAL := 1.234567E-003;

文本 财产: lrVar: %012.3f

文本变量 财产: PLC_PRG.lrVar

输出: lrVar: 00000000.001

<最少位数><准确度>

选修的

未指定时,数字以标准格式输出 1.6

<最少位数>

%012.3f

包括符号和小数点在内的最小位数

例如:12

代码: lrVar : LREAL := 1.234567E-003;

文本 财产: lrVar: %012.3f

文本变量 财产: PLC_PRG.lrVar

输出: lrVar: 000000000000.001

<准确度>

%1.3f

位和小数点的准确性

例如:3

代码: lrVar : LREAL := 1.234567E-003;

文本 财产: lrVar: %1.3f

文本变量 财产: PLC_PRG.lrVar

输出: lrVar: 0.001

f

%f

必需的

带小数点的十进制显示的格式标识符

代码: rWeight : REAL := 0.123456789;

文本 财产: Weight: %f

文本变量 财产: PLC_PRG.rWeight

输出: rWeight: 1.234568

指数表示法中的浮点数

浮点数可以以基数为 10 的标准指数表示法显示。指数表示法的格式定义如下:

% <标志> <最少位数> . <准确度> <类型>

此类占位变量的推荐数据类型: REAL | LREAL

句法

例子

描述

可视化示例

<标志>

可选且可组合

-

%-12.3e

按照最小位数左对齐

+

%+e

总是带有符号,对于正数也是如此

代码: lrVar : LREAL := 1.234567E-003;

文本 财产: lrVar: %+e

文本变量 财产: PLC_PRG.lrVar

输出: lrVar: +1.234567e-003

0

%012.9e

用 0 填充位置,直到达到最小位数(包括符号和小数点)

代码: lrVar : LREAL := -1.234567E-003;

文本 财产: : %012.3f

文本变量 财产: PLC_PRG.lrVar

输出: lrVar: -01.234e-003

<最少位数><准确度>

选修的

不指定时,尾数按标准格式输出1.6

<最少位数>

%12.3e

最小位数,包括符号(尾数和指数)、小数点和指数( E, e

例如:12

代码: lrVar : LREAL := 1.234567E-003;

文本 财产: lrVar: %e

文本变量 财产: PLC_PRG.lrVar

输出: lrVar: 1.234567.-003

<准确度>

%12.3e

尾数和小数点的准确度

例如:3

代码: lrVar : LREAL := -1.234567E-003;

文本 财产: %012.3e

文本变量 财产: PLC_PRG.lrVar

输出: lrVar: -01.235e-003

<类型>

必需的

e

%e

显示 e

代码: rValue : REAL := 0.009876543210;

文本 财产: rValue: %e

文本变量 财产: PLC_PRG.rValue

输出: rValue: 9.876544e-003

E

%E

显示 E

代码: rValue : REAL := 0.009876543210;

文本 财产: rValue: %E

文本变量 财产: PLC_PRG.rValue

输出: rValue: 9.876544E-003

整数时间

兼容性声明

为了获得通常的显示,在 V3.5 SP17 及更高版本中,通常使用三位数字来输出秒的分数(ms/µs/ns)。例如:在 %t[dd-HH:mm:ss:ms]ms 用三位数字指定毫秒。为此,两位数毫秒数前面加了一个零。如果需要两位数输出(如 V3.5 SP17 之前),则必须在应用程序的编译器属性中设置特殊的编译器定义: VISU_MILLISEC_NOLEADING_ZERO

如果输出文本在 文本 元素属性包含占位符 %t 带有时间单位标识,则输出时间、时间长度或时间间隔。占位符变量在 文本变量 财产。

每个时间单位的时间占位符具有以下格式:

%t[ <文本> <时间单位> <文本> ]

推荐的数据类型: TIMELTIME

句法

例子

描述

可视化示例

<时间单位>

必需的

时间单位标识

从时间值中过滤指定时间单位(天、小时、分钟、秒、毫秒)的完整数字

对于 64 位时间值,还有微秒和纳秒

适用于以下示例:

代码: ltTimeSpan : LTIME := LTIME#1D2H3M4S5MS6US7NS;;

文本变量 财产: PLC_PRG.ltTimeSpan

d

%t[d]

天数,不带前缀零

文本 财产: Time span: %t[d] d

输出: Time span: 1 d

dd

%t[dd]

整天数,前面加零

文本 财产: Time span: %t[dd] days

输出: Time span: 01 days

H

%t[H]

小时数 (0–23)

文本 财产: Time span: %t[H] h

输出: Time span: 2 h

HH

%t[HH]

小时数 (00–23)

文本 财产: Time span: %t[HH] h

输出: Time span: 02 h

h

%t[h]

小时数 (0–23)

文本 财产: Time span: %t[h] h

输出: Time span: 2 h

hh

%t[hh]

小时数 (00–23)

文本 财产: Time span: %t[h] h

输出: Time span: 02 h

m

%t[m]

分钟数 (0–59),不带前导零

文本 财产: Time span: %t[m] m

输出: Time span: 3 m

mm

%t[mm]

分钟数 (00–59),带前导零

文本 财产: Period: %t[mm] m

输出: Time span: 03 m

s

%t[s]

秒数 (00–59),不带前导零

文本 财产: Time span: %t[s] s

输出: Time span: 4 s

ss

%t[ss]

秒数 (00–59),带前导零

文本 财产: Time span: %t[ss] s

输出: Time span: 04 s

ms

%t[ms]

秒的小数部分,以毫秒为单位(0-999)

文本 财产: Time span: %t[ms] ms

输出: Time span: 005 ms

us

%t[us]

秒的小数部分,以微秒为单位(0-999)

仅适用于数据类型 LTIME

文本 财产: Time span: %t[us] µs

输出: Time span: 006 µs

注意:定义的最大时间单位内允许溢出。

ns

%t[ns]

秒的小数部分,以纳秒为单位(0-999)

仅适用于数据类型 LTIME

文本 财产: Time span: %t[ns] ns

输出: Time span: 007 ns

注意:定义的最大时间单位内允许溢出。

<文本>

%t[ns nanoseconds]

%t[ns 'ns']

选修的

括号内指定的字符串包含在输出中

注意:如果需要输出一个对应于时间单位标识或包含时间单位标识的字符串,则该字符串必须用单直引号引起来。

文本 财产: %t[Time span: ns nanoseconds]

输出: Time span: 007 nanoseconds

文本 财产: %t[Time span: ns 'ns']

输出: Time span: 007 ns

在括号内,时间单位的标识可以出现任意次数,并可以与任何字符串互换。

句法

例子

描述

可视化示例

%t[dd-HH.m.s.ms.us.ns]

所有时间单位的时间格式,中间有通常的分隔符

文本 财产: Value: %t[dd-HH:mm:ss:ms:us:ns]

输出: Value: 01-02:03:04:005:006:007

%t['Time span:' dd-HH:mm:ss:ms:us:ns]

使用应输出的附加字符串进行格式化,不考虑时间单位的标识

这些类型的字符串用简单的直引号括起来。

文本 财产: Time span %t[dd-HH:mm:ss:ms:us:ns]

输出: Time span: 01-02:03:04:005:006:007

时间作为十进制数

推荐的数据类型: TIMELTIME

在格式定义中,时间长度 <time in unit> 可以用小数位标识来识别 <number of decimal places>。结果是时间长度被格式化为指定时间单位的十进制数(带小数位)。以下时间格式可以实现这一点: HH | H | hh | h| mm | m | ss | s | ms |us | ns.这对于用户输入很有用。

十进制数的时间跨度占位符具有以下格式:

%t[ <时间单位> <小数位数>]

句法

例子

描述

可视化示例

<时间单位>

必需的

时间单位标识,将指定时间单位(天、小时、分钟、秒、毫秒)的时间值格式化为十进制数

对于 64 位时间值,还有微秒和纳秒

<小数位数>

必需的

小数点后的最大位数(>=0) 显示或输入

注意:即使输入或显示不需要小数,至少数字 0 必须指定以允许分数输入。

这些要求适用于以下示例:

代码: ltTime : LTIME;

文本变量 财产: PLC_PRG.ltTime

HH

H

hh

h

%t[hh4]

%t[h4]

时间值(以小时为单位)以十进制数表示

小时数 (0–23)

例如:4

文本 财产: %t[hh2]

用户输入: 1.25

时间值: ltTime = T#1h15m

mm

m

%t[mm2]

%t[m2]

时间值(以分钟为单位)以十进制数表示

例如:2

用户输入: 1.25

时间价值 ltTime = T#1M15S

ss

s

%t[ss3]

十进制数形式的时间值(以秒为单位)

例如:3

用户输入: 1.25

时间价值 ltTime = T#1S250MS

%t[ss0]

例如: 0

用户输入: 1000

时间价值 ltTime = T#16M40S

ms

%t[ms3]

时间值(以毫秒为单位)以十进制数表示

例如:3

用户输入: 1.25

时间价值 ltTime = T#1MS250MS

us

%t[us3]

时间值(以微秒为单位)以十进制数表示

例如:3

用户输入: 1.25

时间价值 ltTime = T#1US250NS

ns

%t[ns0]

时间值(以纳秒为单位)以十进制数表示

例如: 0

用户输入: 125

时间价值 ltTime = T#125NS

系统时间

如果变量没有分配给具有格式定义的占位符,则输出系统时间。

句法

例子

描述

可视化示例

t

%t[HH:mm:ss:ms]

输出当前系统时间

要求: 变量在下面指定 文本变量 财产。

文本 财产: Time: %t[HH:mm:ss:ms]

文本变量 属性:空白

输出: Time: 8:59:59 AM:999

Z

%t[dd:MM:yyyy HH:mm:ss:ms:Z]

选修的

将本地系统时间的偏移量输出为世界时 (UTC)

文本 财产: Time: %t[dd:MM:yyyy HH:mm:ss:ms:Z]

取决于 UTC 变量 VisuElems.Visu_DateTime.DisplayUTC,将显示以下内容:

  • TRUE -> Time: 08/01/2021 04:59:59:999:Z

  • FALSE -> Time: 08/01/2021 06:59:59:999:+02:00

提示

您可以通过编程将系统时间的本地时区切换为世界时间 (UTC)。

当变量 VisuElems.Visu_DateTime.DisplayUTC 设置为 TRUE,系统时间显示为世界时(UTC)。默认情况下,变量 VisuElems.Visu_DateTime.DisplayUTC 设置为 FALSE 使系统时间显示为当地时区。

为了显示日期和时间值,您可以使用时区代码扩展相应的格式字符串 Z。对于本地系统时间的输出,偏移量将以世界时 (UTC) 显示。例如, dd:MM:yyyy HH:mm:ss:ms:Z 输出 01.08.2021 12:00:00:001:+02:00显示世界时间(UTC)时,也会显示UTC代码。 01.08.2021 10:00:00:001:Z

日期和时间

兼容性声明

为了获得通常的显示,在 V3.5 SP17 及更高版本中,通常使用三位数字来输出秒的分数(ms/µs/ns)。例如:在 %t[dd-HH:mm:ss:ms]ms 用三位数表示毫秒。两位数前面加一个零 ms 数字。如果需要两位数输出(如 V3.5 SP17 之前),则必须在应用程序的编译器属性中设置特殊的编译器定义: VISU_MILLISEC_NOLEADING_ZERO

日期和时间定义的推荐数据类型: DATEDATE_AND_TIMEDTLDATELDATE_AND_TIMELDTLTODTIME_OF_DAYTOD

默认情况下,日期和月份的名称以英文显示。当使用本地化文本时, System 文本列表需要补充。此文本列表会自动创建在 点检装置 查看当 %t 使用占位符。此处必须使用英文术语作为 ID。缩写名称和全名都可以进行本地化。

日期和时间定义的格式字符串具有以下格式:

%t[ <日期和时间单位> ]

句法

例子

描述

可视化示例

<日期和时间单位>

必需的

日期和时间单位的识别

从时间值(数据类型:日期和时间)中过滤指定单位(年、月、日、时、分、毫秒)的值

对于 64 位日期和时间值,还有微秒和纳秒

yyyy

%t[yyyy]

年份与世纪

代码: dateBy : DATE := DATE#2020-1-1;

文本 财产: By the year %t[yyyy]

文本变量 财产: PLC_PRG.dateBy

输出: By the year 2020

yy

%t[yy]

不含世纪的年份 (00–99)

代码: dateSince : DATE := DATE#2000-1-1;

文本 财产: Since: %t[yy]

文本变量 财产: PLC_PRG.dateSince

输出: Since: 00

y

%t[y]

不包含世纪的年份 (0–99)

代码: dateSince : DATE := DATE#2000-1-1;

文本 财产: Since: %t[y]

文本变量 财产: PLC_PRG.dateSince

输出: Since: 0

MMMM

%t[MMMM]

月份全名

代码: dateMonth : DATE := DATE#2016-1-1;

文本 财产: Month: %t[MMMM]

文本变量 财产: PLC_PRG.dateMonth

输出: Month: January

MMM

%t[MMM]

月份缩写名称

代码: dateMonth : DATE := DATE#2016-1-1;

文本 财产: Month: %t[MMM]

文本变量 财产: PLC_PRG.dateMonth

输出: Month: Jan

MM

%t[MM]

数字形式的月份 (01–12)

代码: dateMonth : DATE := DATE#2016-1-1;

文本 财产: Month: %t[MM]

文本变量 财产: PLC_PRG.dateMonth

输出: Month: 01

M

%t[M]

月份为数字(1-12)

代码: dateMonth : DATE := DATE#2016-1-1;

文本 财产: Month: %t[M]

文本变量 财产: PLC_PRG.dateMonth

输出: Month: 1

ddddd

%t[ddddd]

以数字表示的星期几(1 = 星期一 - 7 = 星期日)

代码: iDay : INT := 7;

文本 财产: Day: %t[ddddd]

文本变量 财产: PLC_PRG.iDay

输出: Day: 7

dddd

%t[dddd]

星期几的全名

代码: iDay : INT := 7;

文本 财产: Day: %t[dddd]

文本变量 财产: PLC_PRG.iDay

输出: Day: Sunday

ddd

%t[ddd]

星期几的缩写名称

代码: iDay : INT := 7;

文本 财产: Day: %t[ddd]

文本变量 财产: PLC_PRG.iDay

输出: Day: Sun

dd

%t[dd]

月份中的日期(数字形式)(01–31)

代码: iDay : INT := 1;

文本 财产: Day: %t[dd]

文本变量 财产: PLC_PRG.iDay

输出: Day: 01

d

%t[d]

月份中的天数(数字形式)(1-31)

代码: iDay : INT := 1;

文本 财产: Day: %t[d]

文本变量 财产: PLC_PRG.iDay

输出: Day: 1

yyyy

%t[yyyy]

一年中第几天的数字 (001–366)

代码: dateOfNoReturn : DATE := DATE#2016-09-01;

文本 财产: Day of no return: %t[yyyy]

文本变量 财产: PLC_PRG.dateOfNoReturn

输出: Day of no return: 245

HH

%t[HH]

24 小时格式的小时(00–23)

例子

  • hh = 11:11

  • hh = 12:12

  • hh = 13:13

  • hh = 23:23

  • hh = 00:24

  • hh = 01:01

代码: todEnd : TOD := TIME_OF_DAY#17:0:0;

文本 财产: Ends at: %t[HH]:00

文本变量 财产: PLC_PRG.todEnd

输出: Ends at 17:00

hh

%t[hh]

12 小时格式的小时 (01–12)

例子

  • hh = 11:11

  • hh = 12:12

  • hh = 13:01

  • hh = 23:11

  • hh = 00:12

  • hh = 01:01

代码: todEnd : TOD := TIME_OF_DAY#17:0:0;

文本 财产: Ends at: %t[hh] o'clock

文本变量 财产: PLC_PRG.todEnd

输出: Ends at: 05 o'clock

t

%t[t]

12 小时格式的缩写 A 或 P

赞成 00 <= hh <= 11

12 <= hh <= 23

例子

  • hh = 11:11 一

  • hh = 12:中午 12 点

  • hh = 13:01 页

  • hh = 23:11 页

  • hh = 00:12点(午夜)

  • hh = 01:01

代码: tClosed : TOD := TOD#17:17:17.17;

文本 财产: Closed at %t[hh:mm t]

文本变量 财产: PLC_PRG.tClosed

输出: Closed at 05:17 P

tt

%t[tt]

缩写 AM 或 PM(12 小时制)

AM 为 00 <= hh <= 11

私信 12 <= hh <= 23

例子

  • hh = 11:上午 11 点

  • hh = 12:中午 12 点

  • hh = 13:下午 1 点

  • hh = 23:晚上 11 点

  • hh = 00:12 AM(午夜)

  • hh = 01:凌晨 1 点

代码: tClosed : TOD := TOD#17:17:17.17;

文本 财产: Closed at %t[hh:mm tt]

文本变量 财产: PLC_PRG.tClosed

输出: Closed at 05:17 PM

在括号内,日期和时间单位的标识可以出现任意次数,并可以与任何字符串互换。

句法

例子

描述

可视化示例

%t[yyyy-MM-dd dddd]

日期和星期几,中间有分隔符

代码: dateSet : DATE := DATE#2021-02-12;

文本 财产: Date: %t[yyyy-MM-dd dddd]

文本变量 财产: PLC_PRG.dateSet

输出: Date: 2/12/2021 Friday

%t[HH:mm:ss:ms]

一天中的时间

代码: dwTime : DWORD := 4294967295;

文本 财产: Time: %t[HH:mm:ss:ms]

文本变量 财产: PLC_PRG.dwTime

输出: Time: 23:59:59:999

%t[HH 'h' mm 'm'ss 's' ms 'ms']

如果要输出与格式定义相对应的字符串,则这些字符串必须用单直引号表示。

文本 财产: %t['Time' HH 'h' mm 'm'ss 's' ms 'ms']

输出: Time: 23 h 59 m 59 s 999 ms

文本

占位变量的推荐数据类型: STRINGWSTRING

字符串和字符串的格式定义具有以下格式:

% <类型>

句法

例子

描述

可视化示例

<类型>

c

%c

输出 ASCII 字符集中的单个字符

代码: byteChar : BYTE := 16#41;

文本 财产: Key: %c

文本变量 财产: PLC_PRG.byteChar

输出: Key: A

s

%s

字符串输出

推荐的数据类型: STRING | WSTRING

代码: strName : STRING := 'Paul Smith';

文本 财产: Name: %s

文本变量 财产: PLC_PRG.strName

输出: Name: Paul Smith

当启用 UTF-8 编码时 STRING 数据类型,输入和输出均允许使用语言特定字符。语言特定字符的示例包括变音字符和中文字符。

有关详细信息,请参阅: 对话框:项目设置:编译选项

百分号

百分号输出的格式定义

句法

例子

描述

可视化示例

&

%d%%

百分号的输出

使用占位符变量:

代码: iPercentage : INT := 80;

文本 财产: Valid until %d%%.

文本变量 财产: PLC_PRG.iPercentage := 80;

输出: Valid until 80%

文本 财产: Valid until 90%%

输出: Valid until 90%